package designMode.buildMode.singleton;

/**
 * Created by Administrator on 2018/4/10.
 * <p>
 * 懒汉式单例类
 */
public class LazySingleton {
    private static LazySingleton instance = null;

    /**
     * 私有默认构造子
     */
    private LazySingleton() {
    }

    /**
     * 每次获取实例都会进行判断，看是否需要创建实例，浪费判断的时间
     *
     * 静态工厂方法使用了同步化，以处理多线程环境
     *
     * synchronized关键字锁住的是这个对象，这样的用法，在性能上会有所下降，因为每次调用getInstance()，都要对对象上锁
     * 由于懒汉式的实现是线程安全的，这样会降低整个访问的速度，而且每次都要判断
     */
    public static synchronized LazySingleton getInstance() {
        if (instance == null) {
            instance = new LazySingleton();
        }
        return instance;
    }
}
